#include "jiemian.h"
#include "huixian.h"
//管理员账号信息
char manageraccount[21]="manager";
char managerpassword[21]="28256";
char ctemp[21];//存储用户注册时的账号
//总界面
void menu(){
	system("clear");
	printf("----图书管理系统----\n");
	printf("请选择你的身份\n");
	printf("输入1：管理员\n");
	printf("输入2：用户\n");
	printf("输入3：退出当前界面\n");
	int num;
	scanf("%d",&num);
	switch(num){
	case 1: managerLogin(); break;
	case 2:	userMenu();	   break;
	case 3: exit(-1);
	default : printf("输入错误，请再次输入\n"); menu(); break;
	}
}
//管理员登陆
void managerLogin(){
	system("clear");
	printf("---管理员-账号登陆----\n");
	printf("请输入你的账号\n");
	char inaccount[21];
	scanf("%s",inaccount);
	int num1=strcmp(inaccount,manageraccount);
	printf("请输入你的密码\n");
	noecho(STDIN_FILENO); //关闭回显
	char inpassword[21];
	scanf("%s",inpassword);
	restore_echo(STDIN_FILENO); //恢复回显
	int num2=strcmp(inpassword,managerpassword);
	if((0==num1) && (0 == num2)){
		printf("登陆成功\n");
		jindu(1);
		managerMenu();
	}else if((0 == num1) && (0 != num2)){
		printf("账号输入错误,密码正确\n");
		jindu(1);
		menu();
	}else if((0 != num1) && (0 == num2)){
		printf("账号输入正确,密码错误\n");
		jindu(1);
		menu();
	}else{
		printf("账号和密码都输入错误\n");
		jindu(1);
		menu();
	}
}
//管理员界面
void managerMenu(){
	system("clear");
	printf("--管理员--\n");
	printf("请输入要管理的对象\n");
	printf("1：图书管理\n");
	printf("2：用户管理\n");
	printf("3：返回上层界面\n");
	int num1;
	scanf("%d",&num1);
	switch(num1){
	case 1: managerMenuOfBook(); 		break;
	case 2:	managerMenuOfUser();	    break;
	case 3: menu();						break;
	case 4: exit(-1); 					break;
	default : printf("输入错误，请再次输入\n");jindu(1); managerMenu(); break;
	}
}

//管理员管理图书
void managerMenuOfBook(){
	system("clear");
	printf("管理员-->图书管理\n");
	printf("请选择管理项目\n");
	printf("1：添加图书信息\n");
	printf("2：修改图书信息\n");
	printf("3：删除图书信息\n");
	printf("4：查找图书信息\n");
	printf("5：查看库中所有图书信息\n");
	printf("6：返回上层界面\n");
	printf("7：退出当前界面\n");
	int number;
	scanf("%d",&number);
	switch(number){
	case 1: addBook();				break;
	case 2:	changeBook();	  	 	break;
	case 3: delBook();				break;
	case 4:	findBook();	   			break;
	case 5:	travelNode(head);	   	break;
	case 6:	managerMenu();	   		break;
	case 7: exit(-1);
	default : printf("输入错误，请再次输入\n"); jindu(1);menu(); break;
	}
}

//管理员管理用户
void managerMenuOfUser(){
	system("clear");
	printf("管理员-->用户管理\n");
	printf("1：添加用户\n");
	printf("2：修改用户\n");
	printf("3：删除用户\n");
	printf("4：查找用户\n");
	printf("5：查找所有用户\n");
	printf("6:返回上层界面\n");
	printf("7:退出\n");
	int usernum;
	scanf("%d",&usernum);
	switch(usernum){
	case 1: addUser();				break;
	case 2:	changeUserPassord();	break;
	case 3: delUser();				break;
	case 4:	findUser();	   			break;
	case 5:	travelUNode(uhead);	   	break;
	case 6:	managerMenu();	   		break;
	case 7: exit(-1);
	default : printf("输入错误，请再次输入\n"); jindu(1);menu(); break;
	}
}
//进度条
void jindu(int num){
	for(int i=0; i<num; i++){
		printf(". ");
		sleep(1);
	}
}

//用户界面
void userMenu(){
	system("clear");
	printf("超好用的图书管理系统\n");
	printf("请选择要办理的业务\n");
	printf("1:注册\n");
	printf("2:登陆\n");
	printf("3:返回\n");
	printf("4:退出\n");
	int beginnum;
	scanf("%d",&beginnum);
	switch(beginnum){
	case 1: loginUser();			break;
	case 2:	landOnUser();			break;
	case 3: menu();					break;
	case 4:	exit(-1);	   			
	default : printf("输入错误，请再次输入\n"); jindu(1);menu(); break;
	}
}
//用户还借书界面
void UserofBookBorrowandRepay(char* const account){
	system("clear");
	printf("--图书馆--借还书\n");
	printf("请选择要办理的业务\n");
	printf("1:借书\n");
	printf("2:还书\n");
	printf("3:查看馆中书籍\n");
	printf("4:返回\n");
	printf("5:退出\n");
	int secondNum;
	scanf("%d",&secondNum);
	switch(secondNum){
	case 1: UserBorrowBook(account);		break;
	case 2:	UserRepayBook(account);			break;
	case 3:	travelbook(account);			break;
	case 4: userMenu();						break;
	case 5:	exit(-1);	   			
	default : printf("输入错误，请再次输入\n"); jindu(1);
				UserofBookBorrowandRepay(account); break;
	}
}
//用户查看馆中有哪些书籍
void travelbook(char* const account){
	system("clear");
	printf("馆中书籍有：\n");
	travelNodeofBook(head);
	printf("\n");
	printf("输入1返回:请输入\n");
	int m;
	scanf("%d",&m);
	if(1 == m){
		UserofBookBorrowandRepay(account);
	}
	printf("请入错误,请检查输入\n");
	travelbook(account);
}
//用户注册账号
void loginUser(){
	system("clear");
	printf("---账号注册----\n");
	//管理员添加用户
	User data;
	getchar();
	printf("请输入账号昵称，6个汉字以内或18个符号：\n");
	fgets(data.account, sizeof(data.account), stdin);  
    data.account[strcspn(data.account, "\n")] = 0; 
    printf("请输入账号密码：\n");
	//getchar();
	scanf("%s",data.password);
	tailUNode(&uhead,data);
	printf("注册成功\n");
	userofnum++;
	saveUser();
	jindu(1);
	userMenu();
}
//用户登陆
void landOnUser(){
	system("clear");
	printf("---账号登陆----\n");
	printf("请输入你的账号\n");
	char useraccount[21];
	scanf("%s",useraccount);
	UNode* ppaccount=findUNode(useraccount);
	printf("请输入你的密码\n");
	noecho(STDIN_FILENO); 
	char userpassword[21];
	scanf("%s",userpassword);
	restore_echo(STDIN_FILENO);
	UNode* pppassword=findUNodePassount(userpassword);
	if(NULL !=ppaccount && NULL != pppassword){
		printf("登陆成功\n");
		jindu(1);
		UserofBookBorrowandRepay(useraccount);

	}else if(NULL ==ppaccount && NULL != pppassword ){
		printf("账号输入错误,密码正确\n");
		jindu(1);
		userMenu();
	}else if(NULL !=ppaccount && NULL == pppassword ){
		printf("账号输入正确,密码错误\n");
		jindu(1);
		userMenu();
	}else{
		printf("账号和密码都输入错误\n");
		jindu(1);
		userMenu();
	}

}
